jevstrudel.git / website / src / pages / og / [theme] / [song].png.js

Each song's link-preview image, /og/<theme>/<song>.png; drawn in jev/og.mjs.

2import { songCard } from '../../../jev/og.mjs';
3import { loadSongs } from '../../../jev/songs.mjs';
5export async function getStaticPaths() {
6  const songs = (await loadSongs()).filter((s) => s.code);
7  return songs.map((song) => {
8    const [theme, name] = song.id.split('/');
9    return { params: { theme, song: name }, props: { song } };
10  });
11}
12
13export async function GET({ props }) {
14  return new Response(await songCard(props.song), { headers: { 'Content-Type': 'image/png' } });
15}